package device

import "context"

// PClient 定义客户端接口，兼容UDPClient和SerialPort
type PClient interface {
	// Run 启动客户端服务，包含自动重连机制
	Run(ctx context.Context, cb DataCallback)

	// Stop 停止客户端服务
	Stop()

	// SendData 发送数据
	SendData(data []byte) error

	// GetLocalAddr 获取本地地址
	GetLocalAddr() string

	// GetRemoteAddr 获取远程地址或设备地址
	GetRemoteAddr() string

	// IsRunning 检查客户端端是否正在运行
	IsRunning() bool
}

// DataCallback 定义接收数据的回调函数类型
// 对于SerialPort，remoteAddr参数为设备路径
// 对于UDPClient，remoteAddr参数为远程服务器地址
type DataCallback func(data []byte, remoteAddr string)
